package main

import "fmt"

// go语言中总共只有3中引用类型需要make初始化：切片slice、map、channel

func main() {
	//var ch1 chan int	// 引用类型，需要初始化之后才能使用
	//ch1 = make(chan int, 1) // 通道里面元素数量是1
	ch1 := make(chan int) // 1、无缓冲区通道,又称为同步通道，意思是值不能存在通道内，运行会死锁，必须手把手交接
	// 2、换个说话：快递员必须把包裹送到你的手上，也就是说得有另一个goroutine在同时取值，才会通过
	// ch1 := make(chan int, 1)//带缓冲区通道，可以存值
	ch1 <- 10
	x := <-ch1
	close(ch1) // 关闭通道
	fmt.Println(x)

}
